home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 14 / CU Amiga Magazine's Super CD-ROM 14 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-09].iso / CUCD / Programming / IEditor / Expanders / Gauge / Edit.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-06-17  |  5.1 KB  |  211 lines

  1. /*
  2.     C source code created by Interface Editor
  3.     Copyright © 1994-1996 by Simone Tellini
  4.  
  5.     Generator:  C_IE_Mod.generator 37.1 (29.4.96)
  6.  
  7.     Copy registered to :  Simone Tellini
  8.     Serial Number      : #0
  9. */
  10.  
  11. #include <exec/types.h>
  12. #include <exec/nodes.h>
  13. #include <intuition/intuition.h>
  14. #include <intuition/gadgetclass.h>
  15. #include <libraries/gadtools.h>
  16. #include <clib/exec_protos.h>
  17. #include <clib/intuition_protos.h>
  18. #include <clib/gadtools_protos.h>
  19. #include <clib/graphics_protos.h>
  20. #ifdef PRAGMAS
  21. #include <pragmas/exec_pragmas.h>
  22. #include <pragmas/intuition_pragmas.h>
  23. #include <pragmas/graphics_pragmas.h>
  24. #include <pragmas/gadtools_pragmas.h>
  25. #endif
  26. #include <ctype.h>
  27. #include <string.h>
  28.  
  29. #include "DEV_IE:Include/IEditor.h"
  30.  
  31. #include "Edit.h"
  32.  
  33.  
  34. UBYTE *FreeLabels[] = {
  35.     (UBYTE *)"Horizontal",
  36.     (UBYTE *)"Vertical",
  37.     NULL
  38. };
  39.  
  40. UWORD MainGTypes[] = {
  41.     BUTTON_KIND,
  42.     BUTTON_KIND,
  43.     MX_KIND,
  44.     STRING_KIND,
  45.     NULL };
  46.  
  47. struct TextAttr topaz8_065 = {
  48.     (STRPTR)"topaz.font", 8, 0x0, 0x41 };
  49.  
  50. struct NewGadget MainNGad[] = {
  51.     4, 43, 133, 14, "_Ok", &topaz8_065, GD_Ok, NULL, NULL, (APTR)OkClicked,
  52.     247, 43, 133, 14, "_Cancel", &topaz8_065, GD_Canc, NULL, NULL, (APTR)CancClicked,
  53.     259, 19, 17, 9, "_Freedom", &topaz8_065, GD_Free, PLACETEXT_RIGHT, NULL, (APTR)FreeClicked,
  54.     79, 14, 153, 14, "_Label :", &topaz8_065, GD_Label, NULL, NULL, (APTR)LabelClicked
  55. };
  56.  
  57. ULONG MainGTags[] = {
  58.     (GT_Underscore), '_', (TAG_DONE),
  59.     (GT_Underscore), '_', (TAG_DONE),
  60.     (GT_Underscore), '_', (GTMX_Labels), (ULONG)&FreeLabels[0], (GTMX_TitlePlace), PLACETEXT_ABOVE, (TAG_DONE),
  61.     (GT_Underscore), '_', (GTST_MaxChars), 40, (TAG_DONE)
  62. };
  63.  
  64. void CloseWnd( struct Window **Wnd, struct Gadget **GList )
  65. {
  66.     if( *Wnd ) {
  67.         CloseWindow( *Wnd );
  68.         *Wnd = NULL;
  69.     }
  70.     if( GList ) {
  71.         FreeGadgets( *GList );
  72.         *GList = NULL;
  73.     }
  74. }
  75.  
  76. LONG OpenMainWindow( struct Window **Wnd, struct Gadget **GList, struct Gadget *Gadgets[], struct IE_Data *IE )
  77. {
  78.     LONG        ret_code = NULL;
  79.  
  80.     struct Gadget        *g;
  81.     UWORD            lc, tc;
  82.     struct NewGadget    ng;
  83.  
  84.     if(!( g = CreateContext( GList )))
  85.         return( 1L );
  86.  
  87.     for( lc = 0, tc = 0; lc < Main_CNT; lc++ ) {
  88.  
  89.         CopyMem(( char * )&MainNGad[ lc ], ( char * )&ng, ( long )sizeof( struct NewGadget ));
  90.         ng.ng_VisualInfo = IE->ScreenData->Visual;
  91.         ng.ng_TopEdge  += IE->ScreenData->YOffset;
  92.         ng.ng_LeftEdge += IE->ScreenData->XOffset;
  93.         Gadgets[ lc ] = g = CreateGadgetA((ULONG)MainGTypes[ lc ], g, &ng, (struct TagItem *)&MainGTags[ tc ] );
  94.  
  95.         while( MainGTags[ tc ] ) tc += 2;
  96.         tc++;
  97.  
  98.         if( !g )
  99.             return( 2L );
  100.     }
  101.  
  102.  
  103.     struct TagItem WTags[] = {
  104.         { WA_Left, 86 },
  105.         { WA_Top, 78 },
  106.         { WA_Width, 388 + IE->ScreenData->XOffset },
  107.         { WA_Height, 60 + IE->ScreenData->YOffset },
  108.         { WA_MinWidth, 0 },
  109.         { WA_MaxWidth, -1 },
  110.         { WA_MinHeight, 0 },
  111.         { WA_MaxHeight, -1 },
  112.         { WA_PubScreen, IE->ScreenData->Screen },
  113.         { WA_Title, (ULONG)"FuelGauge" },
  114.         { WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SIMPLE_REFRESH|WFLG_ACTIVATE|WFLG_RMBTRAP },
  115.         { WA_IDCMP, BUTTONIDCMP|MXIDCMP|STRINGIDCMP|IDCMP_REFRESHWINDOW|IDCMP_GADGETDOWN|IDCMP_GADGETUP|IDCMP_VANILLAKEY },
  116.         { WA_Gadgets, *GList },
  117.         { TAG_DONE, NULL }
  118.     };
  119.  
  120.     if(!( *Wnd = OpenWindowTagList( NULL, &WTags[0] )))
  121.         return( 4L );
  122.  
  123.     GT_RefreshWindow( *Wnd, NULL );
  124.  
  125.     MainRender( *Wnd, IE );
  126.     return( 0L );
  127. }
  128.  
  129. void MainRender( struct Window *Wnd, struct IE_Data *IE )
  130. {
  131.  
  132.     DrawBevelBox( Wnd->RPort, 3 + IE->ScreenData->XOffset, 2 + IE->ScreenData->YOffset, 240, 41,
  133.         GT_VisualInfo, IE->ScreenData->Visual, GTBB_Recessed, TRUE, TAG_DONE );
  134.  
  135.     DrawBevelBox( Wnd->RPort, 243 + IE->ScreenData->XOffset, 2 + IE->ScreenData->YOffset, 137, 41,
  136.         GT_VisualInfo, IE->ScreenData->Visual, GTBB_Recessed, TRUE, TAG_DONE );
  137. }
  138.  
  139. LONG HandleMainIDCMP( struct Window *Wnd, struct Gadget *Gadgets[], struct IE_Data *IE )
  140. {
  141.     struct IntuiMessage    *m, Msg;
  142.     BOOL            (*func)( struct Window *, struct Gadget **, struct IE_Data *, struct IntuiMessage * );
  143.     BOOL            running = TRUE;
  144.     int            class;
  145.     short            code;
  146.     struct Gadget    *gad;
  147.  
  148.     while( m = GT_GetIMsg( Wnd->UserPort )) {
  149.  
  150.         class = m->Class;
  151.         code  = m->Code;
  152.         gad   = (struct Gadget *)m->IAddress;
  153.  
  154.         CopyMem((char *)m, (char *)&Msg, (long)sizeof( struct IntuiMessage ));
  155.  
  156.         GT_ReplyIMsg( m );
  157.  
  158.         switch( class ) {
  159.  
  160.             case    IDCMP_GADGETUP:
  161.             case    IDCMP_GADGETDOWN:
  162.                 func = gad->UserData;
  163.                 running = (*func)( Wnd, Gadgets, IE, &Msg );
  164.                 break;
  165.  
  166.             case    IDCMP_VANILLAKEY:
  167.                 running = HandleMainKeys( code, Wnd, Gadgets, IE, &Msg );
  168.                 break;
  169.  
  170.             case    IDCMP_REFRESHWINDOW:
  171.                 GT_BeginRefresh( Wnd );
  172.                 MainRender( Wnd, IE );
  173.                 GT_EndRefresh( Wnd, TRUE );
  174.                 break;
  175.  
  176.         }
  177.     }
  178.     return( running );
  179. }
  180.  
  181. BOOL HandleMainKeys( UBYTE Code, struct Window *Wnd, struct Gadget *Gadgets[], struct IE_Data *IE, struct IntuiMessage *Msg )
  182. {
  183.     BOOL running = TRUE;
  184.  
  185.     switch( tolower( Code )) {
  186.  
  187.         case    'o':
  188.             running = OkKeyPressed( Wnd, Gadgets, IE, Msg );
  189.             break;
  190.  
  191.         case    'c':
  192.             running = CancKeyPressed( Wnd, Gadgets, IE, Msg );
  193.             break;
  194.  
  195.         case    'f':
  196.             running = FreeKeyPressed( Wnd, Gadgets, IE, Msg );
  197.             break;
  198.  
  199.         case    'l':
  200.             if(!( Gadgets[ GD_Label ]->Flags & GFLG_DISABLED ))
  201.                 ActivateGadget( Gadgets[ GD_Label ], Wnd, NULL );
  202.             break;
  203.  
  204.         default:
  205.             running = MainVanillaKey( Code, Wnd, Gadgets, IE );
  206.             break;
  207.  
  208.     }
  209.     return( running );
  210. }
  211.